home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _7E11986A8FDE4FF0B8728AB64BC24139 < prev    next >
Encoding:
Text File  |  2004-01-06  |  2.6 KB  |  109 lines

  1.  
  2.  
  3. RaisingWater = {
  4.  
  5.     
  6.     type = "Trigger",
  7.  
  8.     Properties = {
  9.         WaterVolume="",
  10.         height_start = 0,
  11.         height_end = 3,
  12.         fSpeed = 0.1, -- between 0 and 1 please
  13.         fUpdateTime = 0.1, -- in seconds
  14.     },
  15.  
  16.     Editor={
  17.         Model="Objects/Editor/T.cgf",
  18.     },
  19.  
  20.     currlevel=0,
  21.     speed= 0,
  22.  
  23. }
  24.  
  25. -------------------------------------------------------------------------------
  26. function RaisingWater:OnPropertyChange()
  27.     self:OnReset();
  28. end
  29.  
  30. -------------------------------------------------------------------------------
  31. function RaisingWater:OnInit()
  32.     self:OnReset();
  33. end
  34.  
  35. -------------------------------------------------------------------------------
  36. function RaisingWater:OnShutDown()
  37. end
  38.  
  39. -------------------------------------------------------------------------------
  40. function RaisingWater:OnSave(stm)    
  41. end
  42.  
  43. -------------------------------------------------------------------------------
  44. function RaisingWater:OnLoad(stm)     
  45. end
  46.  
  47. -------------------------------------------------------------------------------
  48. function RaisingWater:OnReset()
  49.  
  50.     self:EnableUpdate(1);
  51.  
  52.     self.currlevel = 0;
  53.  
  54.     self.band_height = self.Properties.height_end-self.Properties.height_start;
  55.  
  56.  
  57.     self.speed=(self.Properties.height_end-self.Properties.height_start)*self.Properties.fSpeed;
  58.  
  59.     
  60.  
  61.     System:SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,0);
  62.  
  63. end
  64.  
  65. -------------------------------------------------------------------------------
  66. function RaisingWater:Event_RaiseWater()
  67.     
  68.     --System:Log("Raise Water!!");
  69.  
  70.     self.currlevel = 0;
  71.     self:SetTimer(self.Properties.fUpdateTime*1000);
  72.  
  73.     --System:Log("Set timer to "..self.Properties.fUpdateTime*1000);
  74.     BroadcastEvent(self, "RaiseWater");
  75. end
  76.  
  77.  
  78. -------------------------------------------------------------------------------
  79. function RaisingWater:Event_WaterStopped()
  80.     BroadcastEvent(self, "WaterStopped");    
  81. end
  82.  
  83. -------------------------------------------------------------------------------
  84. function RaisingWater:OnTimer()
  85.  
  86.     self.currlevel=self.currlevel+self.speed;
  87.  
  88.     System:SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,self.currlevel);
  89.  
  90.     --System:Log("Setting water level to "..self.currlevel);
  91.  
  92.     
  93.     if ( abs(self.currlevel) < abs(self.band_height)) then
  94.         --System:Log("RE-Setting water level ");
  95.         self:SetTimer(self.Properties.fUpdateTime*1000); -- move again
  96.     else
  97.         -- set it exactly where it should end
  98.         self:Event_WaterStopped();
  99.         System:SetWaterVolumeOffset(self.Properties.WaterVolume,0,0,self.band_height);
  100.     end
  101. end
  102.  
  103. function RaisingWater:MIN(first, second)
  104.     if (first < second) then
  105.         return first
  106.     else
  107.         return second
  108.     end
  109. end